<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>复旦周边好去处</title>
    <link href="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/tailwindcss/2.2.19/tailwind.min.css" rel="stylesheet">
    <link href="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-100-M/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <script defer src="https://unpkg.com/alpinejs@3.10.5/dist/cdn.min.js"></script>
    <style>
        body {
            font-family: 'Noto Sans SC', sans-serif;
            background-color: #f0f2f5; /* Light gray background for a modern feel */
        }
        .card {
            background-color: white;
            border-radius: 8px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            margin-bottom: 1rem;
            overflow: hidden;
        }
        .card-header {
            padding: 1rem;
            cursor: pointer;
            display: flex;
            justify-content: space-between;
            align-items: center;
            border-bottom: 1px solid #e5e7eb; /* Light border */
        }
        .card-header:hover {
            background-color: #f9fafb; /* Slight hover effect */
        }
        .card-content {
            padding: 1rem;
            border-top: 1px solid #e5e7eb; /* Separator for content */
        }
        .play-button {
            background: none;
            border: none;
            color: #3b82f6; /* Blue accent for play button */
            cursor: pointer;
            font-size: 1.25rem;
        }
        .play-button:hover {
            color: #2563eb;
        }
        h1, h2, h3 {
            font-family: 'Noto Serif SC', serif; /* Serif for headings for a touch of elegance */
            color: #1f2937; /* Darker gray for text */
        }
        h2 {
            border-bottom: 2px solid #3b82f6; /* Accent color for category titles */
            padding-bottom: 0.5rem;
            margin-top: 1.5rem;
            margin-bottom: 1rem;
        }
        audio {
            display: none; /* Hide default audio player */
        }
    </style>
</head>
<body class="p-4 md:p-8">

    <div class="container mx-auto max-w-2xl">
        <header class="text-center mb-8">
            <h1 class="text-3xl font-bold text-gray-800">复旦大学周边周末好去处</h1>
            <p class="text-gray-600 mt-2">根据您的偏好，在复旦大学周边5公里范围内筛选出的一些适合周末晚上休闲放松的好去处。</p>
        </header>

        <div x-data="pageData()">

            <!-- 酒吧类 -->
            <section class="mb-8">
                <h2 class="text-2xl font-semibold">酒吧类 🥂</h2>
                <template x-for="(place, index) in places['酒吧类']" :key="index">
                    <div class="card" x-data="{ open: false, playing: false, audioPlayer: null }" x-init="audioPlayer = $refs.audioElement">
                        <div class="card-header" @click="open = !open">
                            <h3 class="text-xl font-medium" x-text="place.name"></h3>
                            <button class="play-button" @click.stop="togglePlay(audioPlayer)">
                                <i :class="playing ? 'fas fa-pause' : 'fas fa-play'"></i>
                            </button>
                        </div>
                        <div x-show="open" x-transition class="card-content">
                            <p class="text-gray-700" x-text="'地址：' + place.address"></p>
                            <audio :src="place.audioSrc || '#placeholder_audio.mp3'" x-ref="audioElement" @play="playing = true" @pause="playing = false" @ended="playing = false"></audio>
                        </div>
                    </div>
                </template>
            </section>

            <!-- 咖啡厅类 -->
            <section class="mb-8">
                <h2 class="text-2xl font-semibold">咖啡厅类 ☕</h2>
                <template x-for="(place, index) in places['咖啡厅类']" :key="index">
                    <div class="card" x-data="{ open: false, playing: false, audioPlayer: null }" x-init="audioPlayer = $refs.audioElement">
                        <div class="card-header" @click="open = !open">
                            <h3 class="text-xl font-medium" x-text="place.name"></h3>
                            <button class="play-button" @click.stop="togglePlay(audioPlayer)">
                                <i :class="playing ? 'fas fa-pause' : 'fas fa-play'"></i>
                            </button>
                        </div>
                        <div x-show="open" x-transition class="card-content">
                            <p class="text-gray-700" x-text="'地址：' + place.address"></p>
                            <audio :src="place.audioSrc || '#placeholder_audio.mp3'" x-ref="audioElement" @play="playing = true" @pause="playing = false" @ended="playing = false"></audio>
                        </div>
                    </div>
                </template>
            </section>

            <!-- 公园类 -->
            <section class="mb-8">
                <h2 class="text-2xl font-semibold">公园类 🌳</h2>
                <template x-for="(place, index) in places['公园类']" :key="index">
                    <div class="card" x-data="{ open: false, playing: false, audioPlayer: null }" x-init="audioPlayer = $refs.audioElement">
                        <div class="card-header" @click="open = !open">
                            <h3 class="text-xl font-medium" x-text="place.name"></h3>
                            <button class="play-button" @click.stop="togglePlay(audioPlayer)">
                                <i :class="playing ? 'fas fa-pause' : 'fas fa-play'"></i>
                            </button>
                        </div>
                        <div x-show="open" x-transition class="card-content">
                            <p class="text-gray-700" x-text="'地址：' + place.address"></p>
                            <audio :src="place.audioSrc || '#placeholder_audio.mp3'" x-ref="audioElement" @play="playing = true" @pause="playing = false" @ended="playing = false"></audio>
                        </div>
                    </div>
                </template>
            </section>

            <!-- 其他休闲娱乐 -->
            <section>
                <h2 class="text-2xl font-semibold">其他休闲娱乐 🎮🎬</h2>
                <template x-for="(place, index) in places['其他休闲娱乐']" :key="index">
                    <div class="card" x-data="{ open: false, playing: false, audioPlayer: null }" x-init="audioPlayer = $refs.audioElement">
                        <div class="card-header" @click="open = !open">
                            <h3 class="text-xl font-medium" x-text="place.name"></h3>
                            <button class="play-button" @click.stop="togglePlay(audioPlayer)">
                                <i :class="playing ? 'fas fa-pause' : 'fas fa-play'"></i>
                            </button>
                        </div>
                        <div x-show="open" x-transition class="card-content">
                            <p class="text-gray-700" x-text="'地址：' + place.address"></p>
                            <audio :src="place.audioSrc || '#placeholder_audio.mp3'" x-ref="audioElement" @play="playing = true" @pause="playing = false" @ended="playing = false"></audio>
                        </div>
                    </div>
                </template>
            </section>

        </div>
    </div>

    <script>
        function pageData() {
            return {
                places: {
                    '酒吧类': [
                        { name: '精酿啤酒屋', address: '三湘世纪花城东区北门东110米', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522195724-sxTcLaVN.mp3?Expires=86401747915044&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=z2YXh9ID1JwagQ30G1C8ZIW2MOY%3D' },
                        { name: 'NL BAR', address: '政民路与国定路交叉口西南120米', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522195736-CLsTkhjT.mp3?Expires=86401747915057&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=aQFiFzDCg2WkC%2F6cfWzszzWgDA0%3D' },
                        { name: 'Perrys(五角场)', address: '国定路335号3层3F-01', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522195748-PJTydPEI.mp3?Expires=86401747915068&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=hEy8XqyiYvG8KS89SMCgil5n%2FBM%3D' },
                        { name: 'COMMUNE幻师(五角场店)', address: '国定路333号三号湾广场1层F147号', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522195800-yudHIzyx.mp3?Expires=86401747915080&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=YiJK2NNegdmU0vQ%2BP8ZRvFMirIU%3D' },
                        { name: 'Black vine beer pub黑蔓精酿小酒馆', address: '政民路230弄-4号沿街', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522195813-hMcalriQ.mp3?Expires=86401747915093&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=KnuOC4HvG19jkEjN4Pp0N377waU%3D' }
                    ],
                    '咖啡厅类': [
                        { name: 'linguist语言学家咖啡', address: '邯郸路220号135幢1层-1', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522200926-doKOGuDZ.mp3?Expires=86401747915766&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=0lbFMV%2BA1keES%2BPnjCNEL3K93Lg%3D' },
                        { name: 'Manner Coffee', address: '多家分店，如城创中心店 (松花江路与邯郸路交叉口西南140米)、复华科技大楼店 (邯郸路220号复华科技大楼F1层)', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522200938-enflqbSn.mp3?Expires=86401747915778&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=MC9MDzxvUhtF2hRquWRebNSUUxY%3D' },
                        { name: '瑞幸咖啡', address: '多家分店，如国权路店 (国权路525号复华科技大楼底商)、肺科医院正门店 (政民路506号底商)', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522200951-rcyAYtxW.mp3?Expires=86401747915791&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=wilgCMsMcmwOovV1NdE5h1E66L0%3D' },
                        { name: '星巴克(上海肺科医院店)', address: '政民路415号72幢1层103-104室', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522201003-diIjuUcq.mp3?Expires=86401747915803&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=8XM8fOdNwHNqTsY9TvegUsicobk%3D' }
                    ],
                    '公园类': [
                        { name: '四平科技公园', address: '四平路1777号', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522201016-fSwphxwM.mp3?Expires=86401747915816&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=suz8I1DT9hpPivhZd%2FQFLL09Lp0%3D' },
                        { name: '叶家花园', address: '上海肺科医院第二宿舍', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522201129-HccQWiQS.mp3?Expires=86401747915889&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=yVnMIDT0IcRsJsN6XUU9TTclbqc%3D' },
                        { name: '曲阳公园', address: '中山北一路880号', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522201144-tGSKzJLI.mp3?Expires=86401747915904&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=YxnwlXWSeVC8iSOR39r7vXtLoSI%3D' },
                        { name: '江湾公园', address: '新市北路1509号(近丰镇路)', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522201158-cvQqJURJ.mp3?Expires=86401747915918&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=VBP%2Bo8jqTfx%2Bw9RR90oe%2BdcphS0%3D' }
                    ],
                    '其他休闲娱乐': [
                        { name: 'T.I推理空间·剧本杀·狼人杀·血染钟楼桌游(虹口店)', address: '邯郸路43号中观产业园601室', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522214958-RTUGNVyI.mp3?Expires=86401747921798&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=QGKJxfifEgqHaw8gEpMduCWdTS4%3D' },
                        { name: '摩微影院(大学路店)', address: '政民路430号1楼', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522215012-qSEbevwd.mp3?Expires=86401747921812&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=%2Bd4Mu3xbrE%2BCuqGnzmfMZh%2By2h8%3D' },
                        { name: '网咖/电竞馆', address: '例如：伊乐网咖台球 (武川路5号B1)、杰拉网咖(上海五角场店) (邯郸路365号3F)、魔兔电竞(辉河路店) (辉河路47号2楼)', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522215028-MWpNrQXA.mp3?Expires=86401747921828&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=StQ8oktKTZQ1SWh3biTkSKonF9s%3D' },
                        { name: '足浴养生馆', address: '例如：美尔功夫肩颈纳米汗蒸养生馆 (邯郸路58弄1号101室)、心悦养生(运光路店) (运光路与辉河路交叉口西100米)、豫康灵胖脚丫足浴店 (武川路学府街65号胖脚丫足浴)', audioSrc: 'https://minimax-algeng-chat-tts.oss-cn-wulanchabu.aliyuncs.com/audio%2Ftts-mp3-20250522215042-sVkDrMwx.mp3?Expires=86401747921842&OSSAccessKeyId=LTAI5tGLnRTkBjLuYPjNcKQ8&Signature=KXYpYdy01lvt3nq9j%2F1uIBa7dxc%3D' }
                    ]
                },
                activeAudio: null,
                togglePlay(audioPlayer) {
                    if (this.activeAudio && this.activeAudio !== audioPlayer) {
                        this.activeAudio.pause();
                    }
                    if (audioPlayer.paused) {
                        audioPlayer.play();
                        this.activeAudio = audioPlayer;
                    } else {
                        audioPlayer.pause();
                        this.activeAudio = null;
                    }
                }
            };
        }
    </script>

</body>
</html> 